﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Kohonen
{
    public partial class VetorU : Form
    {
        #region Atributos
        /// <summary>
        /// Lista de Neurônios para a criação do gráfico
        /// </summary>
        private List<Neuronio> list;

        #endregion

        /// <summary>
        /// Construtor
        /// </summary>
        public VetorU()
        {
            InitializeComponent();
        }

        #region Métodos

        /// <summary>
        /// Construtor com a lista de Neurônios
        /// </summary>
        public VetorU(List<Neuronio> list)
        {
            this.list = list;
            InitializeComponent();

            CriarGrafico();
        }

        /// <summary>
        /// Faz a Criação do gráfico na tela
        /// </summary>
        private void CriarGrafico()
        {
            Bitmap bmp = new Bitmap(500, 150);

            Graphics g = Graphics.FromImage((Image)bmp);

            int max = 1;

            for (int i = 0; i < list.Count - 1; i++)
            {
                int distancia = (int)list[i].Distancia(list[i + 1].W);

                if (distancia > max)
                    max = distancia;
            }

            int x = 0;
            int y = 150 -  (int)((list[0].Distancia(list[1].W) / max) * 150);

            for (int i = 1; i < list.Count - 1; i++)
            {
                int x1 = ((500 / list.Count) * i) + 1;

                int y1 = 150 - (int)((list[i].Distancia(list[i + 1].W) / max) * 150);

                g.DrawLine(new Pen(new SolidBrush(Color.Red)), x, y, x1, y1);

                x = x1;
                y = y1;
            }

            g.Dispose();

            pcbVetorU.Image = bmp;
            pcbVetorU.Refresh();
        }


        /// <summary>
        /// Evento do Timer para ficar atualizando o gáfico
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Tempo_Tick(object sender, EventArgs e)
        {
            CriarGrafico();
        }

        #endregion
    }
}
